var config = require('../config');

var Token = require('../models').Token;

/** 
 * 创建一个Token
 **/
exports.createToken = function (accessToken, userId, callback) {
    var token = new Token();
    token.access_token = accessToken;
    token.user_id = userId;
    token.save(callback);
}

/**
 * 删除Token
 **/
exports.destory = function (accessToken, callback) {
    Token.remove({access_token: accessToken}, callback);
}

/** 
 * 修改最后访问日期
 **/
exports.findToken = function (accessToken, callback) {
    Token.findOne({access_token: accessToken}, function (err, token) {
        if(err) return callback(err);
        if(!token) return callback();
        
        //校验是否过期。
        if (token.last_visit_at.getTime() + config.token_expires < new Date().getTime()) {
            token.remove(function(err) {
                callback(err);
                // callback(null, '删除Token失败。[' + err + ']');
            });
        } else {
            //  更新最后访问日期
            token.last_visit_at = new Date();
            token.save(callback);
            // callback(null, token);
        }
    })
}

/** 
 * 修改最后访问日期
 **/
exports.visit = function (accessToken, callback) {
    exports.findToken({access_token: accessToken}, function(err, token){
        if (err) return callback(err);
        token.last_visit_at = new Date();
        token.save(callback);
    })
}

